package org.kl.bf.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * @author Qken
 * @date 2014年7月1日
 */
public class DateUtils {
	
	/**
	 * 获取sql Date
	 * @return
	 */
	public static java.sql.Date getSqlDate(){
		return new java.sql.Date(new Date().getTime());
	}
	
	/**
	 * 获取sql Date
	 * @return
	 */
	public static java.sql.Date utilDate2SqlDate(java.util.Date date){
		return new java.sql.Date(date.getTime());
	}
	
	/**
	 * 获取当前年份
	 * 
	 * @return
	 */
	public static int getCurrentYear() {
		Calendar calendar = Calendar.getInstance();
		return calendar.get(Calendar.YEAR);
	}

	/**
	 * 获取当前月份
	 * 
	 * @return
	 */
	public static int getCurrentMonth() {
		Calendar calendar = Calendar.getInstance();
		return calendar.get(Calendar.MONTH) + 1;
	}

	/**
	 * 获取当前日期
	 * 
	 * @return
	 */
	public static int getCurrentDay() {
		Calendar calendar = Calendar.getInstance();
		return calendar.get(Calendar.DAY_OF_MONTH);
	}

	/**
	 * 将日期转化为日期字符串。失败返回null。
	 * 
	 * @param date
	 *            日期
	 * @param parttern
	 *            日期格式
	 * @return 日期字符串
	 */
	public static String dateToString(Date date, String parttern) {
		String dateString = null;
		if (date != null) {
			try {
				dateString = new SimpleDateFormat(parttern).format(date);
			} catch (Exception e) {
			}
		}
		return dateString;
	}
	
	/**
	 * 将字符串转换成指定日期，失败返回null。
	 * @param date 日期字符串
	 * @param dateFormat 日期格式
	 * @return
	 */
	public static Date stringToDate(String date, String dateFormat) {
		SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
		try {
			Date d = new Date();
			d = sdf.parse(date);
			return d;
		} catch (Exception e) {
			return null;
		}

	}
	
	/**
	 * 得到当前时间的下一天
	 */
	public static String getAfterDay(String dateStr) {
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		Date date;
		try {
			date = df.parse(dateStr);
			Calendar calendar = Calendar.getInstance();
			calendar.setTime(date);
			calendar.add(Calendar.DAY_OF_MONTH, 1);
			date = calendar.getTime();
			return df.format(date);
		} catch (ParseException e) {
			e.printStackTrace();
			return "";
		}
	}
	
	/**
	 * 得到当前时间的前一天
	 */
	public static String getBeforeDay(String dateStr) {
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		Date date;
		try {
			date = df.parse(dateStr);
			Calendar calendar = Calendar.getInstance();
			calendar.setTime(date);
			calendar.add(Calendar.DAY_OF_MONTH, -1);
			date = calendar.getTime();
			return df.format(date);
		} catch (ParseException e) {
			e.printStackTrace();
			return "";
		}
	}
}
